package com.tbit.uqbike.webmanager.dao.core;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tbit.uqbike.object.pojo.InvoiceRecord;
import com.tbit.uqbike.object.pojo.vo.InvoiceOrderDetailVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author yee_
 * @version 1.0
 * @date 2023/8/8 14:35
 */
public interface InvoiceRecordDao extends BaseMapper<InvoiceRecord> {

    /**
     * 修改发票与订单标记值
     *
     * @param invoiceId 。
     * @param status    。
     * @param eqStatus  值修改等于这个状态的记录
     */
    void updateInvoiceOrderBound(Integer invoiceId, Integer status, Integer eqStatus);

    /**
     * 根据id修改状态
     *
     * @param id       记录id
     * @param status   状态
     * @param eqStatus 匹配状态(非必填)
     */
    void updateStatusById(@Param("id") Integer id, @Param("status") Integer status, @Param("eqStatus") Integer eqStatus);

    /**
     * 根据发票记录id删除订单绑定关系
     *
     * @param invoiceId 发票记录id
     */
    void deleteInvoiceOrderBoundByInvoiceId(Integer invoiceId);

    /**
     * 根据发票记录id和类型 查询开票详情
     *
     * @param invoiceId 发票记录id
     * @param orderType 发票开具类型
     * @return .
     */
    List<InvoiceOrderDetailVO> selectOrderInfoByTypeAndInvoiceId(Integer invoiceId, Integer orderType);


    /**
     * 根据订单编号查询订单是否已开票
     *
     * @param orderNo 订单编号
     * @return 。
     */
    Boolean queryOrderHasBeenInvoicedByOrderNo(String orderNo);
}
